const { createStore } = require('redux')

function reducer(state = { count: 0, msg: 'hello redux' }, action) {
  // state 就是store中管理的所有的数据
  // action 就是需求  action的具体表现形式是一个对象 {type: 'jia'}
  // 目前这个reducer能干的事情: 1. 数字加1, 2. 数字减1
  //   console.log(state, action)
  switch (action.type) {
    case 'jia':
      return {
        ...state, //保留不需要被修改的数据
        count: state.count + action.payload,
      }
    case 'jian':
      return {
        ...state,
        count: state.count - action.payload,
      }
    //   为了初始化数据
    default:
      return state
  }
}

const store = createStore(reducer)

// 监听数据变化的方法:
store.subscribe(() => {
  // 一旦store的数据变化,则这个函数就会执行
  console.log(store.getState())
})

// 如何修改数据
// store.dispatch(action对象)
// 注意: 想要往reducer里面传递数据,一定是通过action对象传递的
store.dispatch({ type: 'jia', payload: 3 })
store.dispatch({ type: 'jia', payload: 8 })
// console.log(store.getState())
store.dispatch({ type: 'jian', payload: 5 })
